|
Speakeasy is a numerical computing interactive environment also featuring an interpreted programming language. It was initially developed for internal use at the Physics Division of Argonne National Laboratory by the theoretical physicist Stanley Cohen.〔("An introduction to Speakeasy - Informal report )〕 He eventually founded Speakeasy Computing Corporation to make the program available commercially. Speakeasy is a very long-lasting numerical package. In fact, the original version of the environment was built around a core dynamic data repository called "Named storage" developed in the early 1960s,〔("Named storage: a dynamic storage-allocation scheme with manipulative routines", ''AEC research and development report - Volume 7021 ANL (Series)'' - Stanley Cohen, Physics Division, U.S. Atomic Energy Commission, Argonne National Laboratory, 1965. )〕〔("Speakeasy - An evolutionary system", S. Cohen, ''Proceedings of the ACM SIGPLAN symposium on Very high level languages'' (March 1974) )〕 while the most recent version has been released in 2006. Speakeasy was aimed to make the computational work of the physicists at the Argonne National Laboratory easier.〔("The Delphi-Speakeasy system. I. Overall description", Stanley Cohen, ''Computer Physics Communications, Volume 2, Issue 1, January 1971, Pages 1-10'' )〕 It was initially conceived to work on mainframes (the only kind of computers at that time), and was subsequently ported to new platforms (minicomputers, personal computers) as they became available. The porting of the same code on different platforms was made easier by using Mortran metalanguage macros to face systems dependencies and compilers deficiencies and differences.〔"Using Mortran to translate Fortran programs from one machine to another" Steven C. Pieper, ''Argonne National Laboratory'', 1976〕 Speakeasy is currently available on several platforms : PCs running Windows, OS X, Linux, departmental computers and workstations running several flavors of Linux, AIX or Solaris. Speakeasy was also among the first interactive numerical computing environments, having been implemented in such a way on a CDC 3600 system, and later on on IBM TSO machines as one was in beta-testing at the Argonne National Laboratory at the time. Almost since the beginning (as the dynamic linking functionality was made available in the operating systems) Speakeasy features the capability of expanding its operational vocabulary using separated modules, dynamically linked to the core processor as they are needed. For that reason such modules were called "linkules" (LINKable-modULES).〔("Speakeasy linkules - plug compatible software" ''ACM - Proceedings of the 1977 annual conference'' )〕 They are functions with a generalized interface, which can be written in FORTRAN or in C. The independence of each of the new modules from the others and from the main processor is of great help in improving the system, especially it was in the old days. This easy way of expanding the functionalities of the main processor was often exploited by the users to develop their own specialized packages. Besides the programs, functions and subroutines the user can write in the Speakeasy's own interpreted language, linkules add functionalities carried out with the typical performances of compiled programs. Among the packages developed by the users, one of the most important is "Modeleasy", originally developed as "FEDeasy"〔"Econometric models via SPEAKEASY/FEDEASY", James M. Condie, John W. Davison, 1975〕 in the early 1970s at the research department of the Federal Reserve Board of Governors in Washington D.C.. Modeleasy implements special objects and functions for large econometric models estimation and simulation. Its evolution led eventually to its distribution as an independent product. == Syntax == The symbol :_ (colon+underscore) is both the Speakeasy logo and the prompt of the interactive session. The dollar sign is used for delimiting comments; the ampersand is used to continue a statement on the following physical line, in which case the prompt becomes :& (colon+ampersand); a semicolon can separate statements written on the same physical line. $ suppose you have a very long statement, $ you can write it on multiple physical lines using "&" $ at the end of the line to be continued: :_ the_return_value = this_is_a_function_with many_arguments(argument_1, argument_2, & :& argument_3, argument_4, argument_5, argument_6) $ on the other hand, you can collect several short statements $ on a single physical line using ";" :_ a=1; b=2; c=3; d=4 As its own name tells, Speakeasy was aimed to expose a syntax as friendly as possible to the user, and as close as possible to the spoken language. The best example of that is given by the set of commands for reading/writing data from/to the permanent storage. E.g. (the languages keywords are in upper case to clarify the point): :_ GET my_data FROM LIBRARY my_project :_ KEEP my_data AS other_data IN LIBRARY other_project Variables (i.e. Speakeasy objects) are given a name up to 255 character long, when LONGNAME option is ON, up to 8 characters otherwise (for backward compatibility). They are dynamically typed, depending on the value assigned to them. :_ a=1 :_ whatis a A is a REAL SCALAR. :_ a="now a character array" :_ whatis a A is a 21 element CHARACTER ARRAY. Arguments of functions are usually not required to be surrounded by parenthesis or separated by commas, provided that the context remains clear and unambiguous. For example: :_ sin(grid(-pi,pi,pi/32)) $ fully specified syntax can be written : :_ sin grid(-pi,pi,pi/32) $ the argument of function sin is not surrounded by parenthesis or even :_ sin grid(-pi pi pi/32) $ the arguments of function grid can be separated by spaces Many other syntax simplifications are possible; for example, to define an object named 'a' valued to a ten-elements array of zeroes, one can write any of the following statements: :_ a=array(10:0,0,0,0,0,0,0,0,0,0) :_ a=0,0,0,0,0,0,0,0,0,0 :_ a=0 0 0 0 0 0 0 0 0 0 :_ a=ints(10) *0 :_ a=10: Speakeasy is a ''vector-oriented'' language: giving a structured argument to a function of a scalar, the result is usually an object with the same structure of the argument, in which each element is the result of the function applied to the corresponding element of the argument. In the example given above, the result of function sin applied to the array (let us call it x) generated by the function grid is the array answer whose element answer(i) equals sin(x(i)) for each i from 1 to noels(x) (the number of elements of x). In other words, the statement :_ a=sin(grid(-pi pi pi/32)) is equivalent to the following fragment of program: x=grid(-pi pi pi/32) $ generates an array of real numbers from -pi to pi, stepping by pi/32 for i = 1,noels(x) $ loops on the elements of x a(i) = sin(x(i)) $ evaluates the i-th element of a next i $ increment the loop index The ''vector-oriented'' statements avoid writing programs for such loops and are much faster than them. 抄文引用元・出典: フリー百科事典『 ウィキペディア(Wikipedia)』 ■ウィキペディアで「Speakeasy (computational environment)」の詳細全文を読む スポンサード リンク
|